#include "app_storage.h"

#include "common_debug.h"
#include "drv_flash.h"
#include "drv_flash2eep.h"

/**
 * @brief 初始化存储模块
 *
 * @return result_e 初始化结果, RESULT_STATUS_OK表示成功, 其他值表示失败
 */
result_e app_storage_init(void)
{
    CHECK_RESULT(snf_drv_flash_init(), "flash init failed");
    CHECK_RESULT(snf_flash2eep_init(), "flash2eep init failed");

    return RESULT_STATUS_OK;
}

/**
 * @brief 写入存储数据
 *
 * @param idx   存储索引
 * @param data  数据指针
 * @param len   数据长度
 * @return result_e 写入结果, RESULT_STATUS_OK表示成功, 其他值表示失败
 */
result_e app_storage_write(storage_idx_e idx, uint8_t *data, uint8_t len)
{
    CHECK_RESULT(snf_flash2eep_write(idx, data, len), "flash2eep write failed");

    return RESULT_STATUS_OK;
}

/**
 * @brief 读取存储数据
 *
 * @param idx           存储索引
 * @param buf           存储数据缓冲区
 * @param buf_size      缓冲区大小
 * @return result_e     读取结果, RESULT_STATUS_OK表示成功, 其他值表示失败
 */
result_e app_storage_read(storage_idx_e idx, uint8_t *buf, uint8_t buf_size)
{
    if (snf_flash2eep_read(idx, buf, buf_size) <= 0) {
        return RESULT_STATUS_ERROR;
    }

    return RESULT_STATUS_OK;
}
